package com.zpark.service.impl;

import com.zpark.dao.ScoreDao;
import com.zpark.dao.StudentDao;
import com.zpark.dao.impl.ScoreDaoImpl;
import com.zpark.dao.impl.StudentDaoImpl;
import com.zpark.entity.Student;
import com.zpark.service.StudentService;

import java.util.List;

public class StudentServiceImpl implements StudentService {
    private StudentDao studentDao = new StudentDaoImpl();
    @Override
    public void add(Student student) {
        studentDao.insert(student);
    }

    @Override
    public void edit(Integer id, Student student) {
        studentDao.update(id,student);
    }

    @Override
    public void remove(Integer id) {
        studentDao.delete(id);
    }

    @Override
    public Student getOne(Integer id) {
        return studentDao.selectById(id);
    }

    @Override
    public List<Student> getPage(Integer size, Integer number) {
        /**
         * 分页：
         * 1.从前端接受的数据来看，前端需要：每页size条数据，第number页
         * 2.sql中limit需要，查询size条数据，从number号数据开始
         */
        /**
         * 假设每页5/10 123
         * 0 0
         * 5 10
         * 10 20
         */
        int limitNumber =  (number - 1) * size;
        return studentDao.selectPage(size,limitNumber);
    }

    @Override
    public Student login(String username, String password) {
        /**
         * TODO:有一个问题会影响其他的功能的实现 需要在控制层进行Session存储的处理
         * 记录学生的ID，所以在选课的时候，就是当前学生在选择
         * 控制层：session存一个标识，学生存进去session 从会话中获取就可以保证以上的实现
         */
        return studentDao.selectByUsernameAndPassword(username,password);
    }
    private ScoreDao scoreDao = new ScoreDaoImpl();

    @Override
    public void choiceCourse(Integer studentId, List<Integer> courseIds) {
        // 数据层面上，是添加一条scour表数据
        for (Integer courseId : courseIds) {
            scoreDao.insert(studentId,courseId);
        }
    }
}
